﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BookStore.Solution.BLL;
using BookStore.Solution.Entities;
namespace BookStore.Solution.Presentation
{
    public partial class ucBill : UserControl
    {
        public ucBill()
        {
            InitializeComponent();
        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            frmBill frm = new frmBill();
            frm.ShowDialog();
            if (frm.newBill != null)
            {
                MessageBox.Show("Thêm hóa đơn thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                InsertDatagridview(frm.newBill);
            }
            else
            {
                MessageBox.Show("Thêm hóa đơn không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        BillManager BillManager = new BillManager();
        BillDetailManager BillDetailManager = new BillDetailManager();
        DataTable MyBillTable = null;

        private bool SetRole()
        {
            bool t = false;
            List<string> roles = AccountManager.GetRoleName();
            btnPrint.Enabled = btnSua.Enabled = btnThem.Enabled = btnXemChiTiet.Enabled = btnXoa.Enabled = false;
            btnTimTheoNgay.Enabled = btnSearchByID.Enabled = false;
            if (roles.Contains("Thêm, xóa, cập nhật hóa đơn"))
            {
                btnPrint.Enabled = btnSua.Enabled = btnThem.Enabled = btnXemChiTiet.Enabled = btnXoa.Enabled = true;
                t = true;
            }
            if (roles.Contains("Tìm kiếm hóa đơn"))
            {
                btnTimTheoNgay.Enabled = btnSearchByID.Enabled = btnXemChiTiet.Enabled = true;
                t = true;
            }
            return t;
        }

        private void ucBill_Load(object sender, EventArgs e)
        {
            if (SetRole())
            {
                MyBillTable = BillManager.GetAll();
                LoadData(MyBillTable);
            }
        }
        private void LoadData(DataTable table)
        {
            dtgvListbill.AutoGenerateColumns = false;
            dtgvListbill.DataSource = table;
            for (int i = 0; i < dtgvListbill.Columns.Count; i++)
            {
                dtgvListbill.Columns[i].DataPropertyName = dtgvListbill.Columns[i].Name;
            }
        }
        private void InsertDatagridview(Bill bill)
        {
            
            DataRow r = MyBillTable.NewRow();
            r[0] = bill.BillID;
            r[1] = bill.EmployeeID;
            r[2] = bill.Date;
            r[3] = bill.PromotionID;
            r[4] = bill.Status;
            MyBillTable.Rows.Add(r);
            LoadData(MyBillTable);
        }

        private void dtgvListbill_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btnSua_Click(object sender, EventArgs e)
        {
               Bill bill;
               if (dtgvListbill.SelectedRows.Count > 0)
               {
                  
                   bill = getBill();
                   frmBill frm = new frmBill(bill);
                   frm.ShowDialog();
                   for (int i = 0; i < dtgvListbill.RowCount; i++)
                   {
                       if (int.Parse(dtgvListbill.Rows[i].Cells[0].Value.ToString()) == frm.newBill.BillID)
                       {
                           dtgvListbill.Rows[i].Cells[3].Value = frm.newBill.PromotionID;
                           dtgvListbill.Rows[i].Cells[2].Value = frm.newBill.Date;
                           break;
                       }
                   }
               }
               else
                   MessageBox.Show("Bạn hãy chọn hóa đơn cần cập nhật", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        private Bill getBill()
        {
            Bill b = new Bill();
            b.BillID = int.Parse(dtgvListbill.SelectedRows[0].Cells[0].Value.ToString());
            b.EmployeeID = dtgvListbill.SelectedRows[0].Cells[1].Value.ToString();
            b.Date = DateTime.Parse(dtgvListbill.SelectedRows[0].Cells[2].Value.ToString());
            b.PromotionID = dtgvListbill.SelectedRows[0].Cells[3].Value.ToString();
            b.Status = dtgvListbill.SelectedRows[0].Cells[4].Value.ToString();
            return b;
        }
        private void btnXemChiTiet_Click(object sender, EventArgs e)
        {

            Bill bill;
            if (dtgvListbill.SelectedRows.Count > 0)
            {
                bill = getBill();
                frmBill frm = new frmBill(bill,"view");
                frm.ShowDialog();
               
            }
            else
                MessageBox.Show("Hãy chọn hóa đơn cần xem chi tiết", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (dtgvListbill.SelectedRows.Count > 0)
            {
                DialogResult result  = MessageBox.Show("Bạn muốn xóa hóa đơn ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    Bill BillID = getBill();
                    //  BillDetailManager.DeleteToBill(BillID);
                    BillID.Status = "Đã xóa";
                    BillDetailManager.UpdateStatus(BillID);
                    string kq = BillManager.Delete(BillID);
                    if (kq.Equals("Xóa thành công"))
                    {
                        MessageBox.Show("Xóa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        dtgvListbill.Rows.RemoveAt(dtgvListbill.CurrentRow.Index);
                    }
                    else
                        MessageBox.Show("Xóa không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                
            }
            else
            {
                MessageBox.Show("Chọn hóa đơn cần xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        private void btnTimTheoNgay_Click(object sender, EventArgs e)
        {
            FrmSearchBillByDay frm = new FrmSearchBillByDay();
            frm.ShowDialog();
            if (frm.datetime.Year>1999)
            {
                MyBillTable = BillManager.SearchByDay(frm.datetime);
                if (MyBillTable != null)
                {
                    LoadData(MyBillTable);
                }
                else
                {
                    MessageBox.Show("Không có hóa đơn nào được tìm thấy", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        private void btnSearchByID_Click(object sender, EventArgs e)
        {
            FrmSearchBillByID frm = new FrmSearchBillByID();
            frm.ShowDialog();
            if (frm.BillID!=-1)
            {
                MyBillTable = BillManager.SearchID(frm.BillID);
                if (MyBillTable != null)
                {
                    LoadData(MyBillTable);
                }
                else
                    MessageBox.Show("Không có hóa đơn nào được tìm thấy", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {
            
            frmPrintBill frm= new frmPrintBill(int.Parse(dtgvListbill.CurrentRow.Cells["BillID"].Value.ToString()));
            frm.ShowDialog();
        }

     
    }
}
